package com.lambda.test04;
/*
首先存在一个接口（Calculator）
    2. 在该接口中存在一个抽象方法（calc），该方法是有参数也有返回值
    3. 在测试类（CalculatorDemo）中存在一个方法（useCalculator）
        方法的的参数是Calculator类型的
        在方法内部调用了Calculator的calc方法
 */
public class CalculatorDemo {
    public static void main(String[] args) {
        //匿名内部类的写法
        useCalculator(new Calculator() {
            @Override
            public int calc(int a, int b) {
                return a+b;
            }
        });
        //lambda
        useCalculator((int a,int b)->{
            return a-b;
        });
        //() 还在 类型 省略  return 都没了 当方法体有且仅有一行 {}; 可以省 如果有返回值 return 也可以省
        useCalculator((a,  b) -> a+b);
    }


    public static void useCalculator(Calculator calculator){
        int calc = calculator.calc(10,20);
        System.out.println("获得到了计算结果"+calc);


    }
}

interface Calculator{
    int calc(int a,int b);
}
